package com.lili.sort;

/**
 * @Auther: 李 力
 * @Date: 2024/8/1
 * @Description: 冒泡排序
 * @version: 1.0
 */
public class BubbleSort {

    /*
     * 时间复杂度: 最好O(n)  最坏O(n^2)  平均O(n^2)
     * 空间复杂度: O(1)
     */

    public static int[] bubbleSort(int[] arr) {
        //需要排序的次数
        int count = arr.length - 1;
        while (count > 0) {
            //记录每一轮排序后还没有排序的边界
            int x = 0;
            for (int i = 0; i < count; i++) {
                if (arr[i] > arr[i + 1]) {
                    //交换元素
                    int tem = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = tem;
                    //更换边界
                    x = i;
                }
            }
            //下一轮排序
            count = x;
            if (count == 0) {
                break;
            }
        }
        return arr;
    }
}
